#define _CRT_SECURE_NO_WARNINGS 1


#include"Person.h"

//为了兼容C 这下面是struct
//C++兼容C struct的用法
//同时C++对struct进行了升级，把struct升级成了类
//1.结构体可以做类型
//2.里面可以定义函数

//1.结构体可以做类型
struct SListNode {
	int val;
	//C语言写法
	//struct STack* next;
	//C++可这样
	//名称代表类型
	SListNode* next;
};

struct Student
{
	//2.里面可以定义函数
	void Init(const char* name, const char* gender, int age)
	{
		strcpy(_name, name);
		strcpy(_gender, gender);
		_age = age;
	}

	void Print()
	{
		cout << _name << " " << _gender << " " << _age << endl;
	}

	//这里加 _ 是为标识成员变量
	char _name[20];
	char _gender[3];
	int _age;
};





class className
{
	// 类体：由成员函数和成员变量组成

}; // 一定要注意后面的分号

int main()
{
	Student s;
	s.Init("Peter", "男", 18);
	s.Print();
	return 0;
}


////int TestAuto()
////{
////	return 10;
////}
//
//int main()
//{
//	//int a = 10;
//
//	//auto b = a;
//	//auto c = 'a';
//	//auto d = TestAuto();
//
//	//cout << typeid(b).name() << endl;
//	//cout << typeid(c).name() << endl;
//	//cout << typeid(d).name() << endl;
//
//	////auto e; 无法通过编译，使用auto定义变量时必须对其进行初始化
//
//	//int arr[] = { 1,5,7,3,2,6,9,0 };
//	//for (auto e : arr)
//	//{
//	//	cout << e << " ";
//	//}
//	//cout << endl;
//
//	//for (auto& e : arr)
//	//{
//	//	e *= 2;
//	//}
//
//	//for (int e : arr)
//	//{
//	//	cout << e << " ";
//	//}
//	//cout << endl;
//
//
//	//int x = 10;
//	//auto a = &x;
//	//auto* b = &x;
//	//auto& c = x;
//	//cout << typeid(a).name() << endl;
//	//cout << typeid(b).name() << endl;
//	//cout << typeid(c).name() << endl;
//	//*a = 20;
//	//*b = 30;
//	//c = 40;
//	
//
//	//auto a = 1, b = 2;
//	//auto c = 3, d = 4.0; // 该行代码会编译失败，因为c和d的初始化表达式类型不同
//	//
//
//	return 0;
//}
